সি প্রোগ্রামিং ভাষায় ইউটিলিটি ফাংশনগুলো বিভিন্ন সাধারণ কাজ সম্পাদনের জন্য ব্যবহৃত হয়, যা প্রোগ্রামিংয়ে সাহায্যকারী হিসেবে কাজ করে। সি লাইব্রেরির stdlib.h
এবং stddef.h
হেডার ফাইলগুলোতে এই ফাংশনগুলো সংরক্ষিত থাকে। ইউটিলিটি ফাংশনগুলো সাধারণত কনভারশন, এলিমেন্ট খোঁজা, অ্যাবসোলিউট মান বের করা এবং র্যান্ডম সংখ্যা উৎপাদন ইত্যাদি কাজের জন্য ব্যবহৃত হয়।
নিচে সি প্রোগ্রামিংয়ের গুরুত্বপূর্ণ কিছু ইউটিলিটি ফাংশন এবং তাদের কাজ সম্পর্কে বিস্তারিত আলোচনা করা হলো:
abs()
– অ্যাবসোলিউট মান নির্ধারণabs()
ফাংশনটি একটি ইন্টিজার সংখ্যার অ্যাবসোলিউট মান (পজিটিভ মান) নির্ধারণ করে। এটি stdlib.h
হেডার ফাইলের অন্তর্গত।
int abs(int x);
#include <stdio.h>
#include <stdlib.h>
int main() {
int num = -10;
printf("Absolute value of %d is %d\n", num, abs(num));
return 0;
}
atoi()
– স্ট্রিং থেকে ইন্টিজার কনভারশনatoi()
(ASCII to Integer) ফাংশনটি একটি স্ট্রিংকে ইন্টিজারে রূপান্তর করে। স্ট্রিংটি যদি পূর্ণসংখ্যায় রূপান্তরযোগ্য হয়, তাহলে এটি ইন্টিজার মান রিটার্ন করে; অন্যথায় এটি ০ রিটার্ন করে। এটি stdlib.h
হেডার ফাইলের অন্তর্গত।
int atoi(const char *str);
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234";
int num = atoi(str);
printf("The integer value is %d\n", num);
return 0;
}
atof()
– স্ট্রিং থেকে ফ্লোট কনভারশনatof()
(ASCII to Float) ফাংশনটি একটি স্ট্রিংকে ফ্লোটিং পয়েন্ট সংখ্যায় রূপান্তর করে। এটি stdlib.h
হেডার ফাইলের অন্তর্গত।
double atof(const char *str);
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12.34";
double num = atof(str);
printf("The float value is %.2f\n", num);
return 0;
}
rand()
এবং srand()
– র্যান্ডম সংখ্যা উৎপাদনrand()
ফাংশনটি একটি পসেটিভ র্যান্ডম সংখ্যা রিটার্ন করে, এবং srand()
ফাংশনটি র্যান্ডম সংখ্যার সূচনা মান সেট করে। srand()
ফাংশন ব্যবহার করে র্যান্ডম সংখ্যা উৎপাদনের সময় প্রতিবার আলাদা ফলাফল পাওয়া যায়।
int rand(void);
void srand(unsigned int seed);
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(0)); // র্যান্ডম সংখ্যার সূচনা মান সেট করা
printf("Random number: %d\n", rand());
return 0;
}
qsort()
– কুইকসোর্ট অ্যালগরিদমের মাধ্যমে সর্টিংqsort()
ফাংশনটি কুইকসোর্ট অ্যালগরিদম ব্যবহার করে একটি অ্যারে সর্ট করে। এটি একটি জেনেরিক ফাংশন যা যে কোনো ধরনের অ্যারে সর্ট করতে পারে।
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *));
base
: অ্যারের প্রথম এলিমেন্টের পয়েন্টার।nitems
: অ্যারের এলিমেন্ট সংখ্যা।size
: প্রতিটি এলিমেন্টের সাইজ।compar
: একটি কম্পারেটর ফাংশন, যা তুলনা করতে ব্যবহৃত হয়।#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int arr[] = {5, 3, 8, 6, 2};
int n = sizeof(arr) / sizeof(arr[0]);
qsort(arr, n, sizeof(int), compare);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
bsearch()
– বাইনারি সার্চbsearch()
ফাংশনটি একটি সর্ট করা অ্যারেতে বাইনারি সার্চ সম্পন্ন করে। এটি একটি এলিমেন্ট খুঁজে বের করতে দ্রুত কার্যকর।
void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *));
key
: যে মানটি খোঁজা হচ্ছে।base
: অ্যারের প্রথম এলিমেন্টের পয়েন্টার।nitems
: অ্যারের এলিমেন্ট সংখ্যা।size
: প্রতিটি এলিমেন্টের সাইজ।compar
: একটি কম্পারেটর ফাংশন, যা তুলনা করতে ব্যবহৃত হয়।#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 3;
int *found = (int *)bsearch(&key, arr, n, sizeof(int), compare);
if (found != NULL) {
printf("Element %d found at position %ld\n", key, found - arr);
} else {
printf("Element not found.\n");
}
return 0;
}
ফাংশন | কাজ |
---|---|
abs() | অ্যাবসোলিউট মান নির্ধারণ |
atoi() | স্ট্রিং থেকে ইন্টিজার রূপান্তর |
atof() | স্ট্রিং থেকে ফ্লোট রূপান্তর |
rand() | র্যান্ডম সংখ্যা উৎপাদন |
srand() | র্যান্ডম সংখ্যার সূচনা মান নির্ধারণ |
qsort() | কুইকসোর্ট অ্যালগরিদমের মাধ্যমে সর্টিং |
bsearch() | বাইনারি সার্চের মাধ্যমে এলিমেন্ট খোঁজা |
এই ইউটিলিটি ফাংশনগুলো সি প্রোগ্রামে বিভিন্ন কাজ সহজে এবং দ্রুত সম্পন্ন করতে ব্যবহৃত হয়। এগুলো সাধারণ কাজের জন্য অত্যন্ত কার্যকর এবং প্রোগ্রামিংয়ের অনেক সময় বাঁচায়।
stdlib.h
এর ইউটিলিটি ফাংশনসমূহstdlib.h
হেডার ফাইলটি সি প্রোগ্রামিং ভাষায় স্ট্যান্ডার্ড লাইব্রেরির বিভিন্ন ইউটিলিটি ফাংশন সরবরাহ করে। এই ফাংশনগুলো বিভিন্ন ধরনের কাজ সম্পাদন করতে ব্যবহৃত হয়, যেমন ডাইনামিক মেমোরি অ্যালোকেশন, টাইপ কাস্টিং, এলিমেন্ট সোর্টিং, সংখ্যার রূপান্তর, র্যান্ডম সংখ্যা উৎপাদন ইত্যাদি।
এখানে stdlib.h
এর কিছু গুরুত্বপূর্ণ ইউটিলিটি ফাংশনের ব্যাখ্যা দেওয়া হলো:
atoi()
– স্ট্রিং থেকে ইন্টিজার রূপান্তরatoi()
ফাংশনটি একটি স্ট্রিংকে ইন্টিজারে রূপান্তর করে। যদি স্ট্রিংয়ে বৈধ সংখ্যা থাকে, তবে এটি সংখ্যায় রূপান্তর করে।
int atoi(const char *str);
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "123";
int num = atoi(str);
printf("Integer: %d\n", num);
return 0;
}
atof()
– স্ট্রিং থেকে ফ্লোট রূপান্তরatof()
ফাংশনটি একটি স্ট্রিংকে ফ্লোটিং পয়েন্ট সংখ্যায় রূপান্তর করে।
double atof(const char *str);
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "3.14159";
double num = atof(str);
printf("Float: %lf\n", num);
return 0;
}
atol()
এবং atoll()
– স্ট্রিং থেকে লং ইন্টিজার এবং লং লং ইন্টিজার রূপান্তরatol()
এবং atoll()
ফাংশনগুলো স্ট্রিংকে যথাক্রমে long
এবং long long
ইন্টিজারে রূপান্তর করে।
long int atol(const char *str);
long long int atoll(const char *str);
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "123456";
long int num = atol(str);
printf("Long int: %ld\n", num);
return 0;
}
rand()
– র্যান্ডম সংখ্যা তৈরিrand()
ফাংশনটি র্যান্ডম সংখ্যা তৈরি করতে ব্যবহৃত হয়। এটি ০ থেকে RAND_MAX
পর্যন্ত একটি সংখ্যা রিটার্ন করে।
int rand(void);
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("Random number: %d\n", rand());
return 0;
}
বিঃদ্রঃ: র্যান্ডম সংখ্যা সিড সেট করার জন্য
srand()
ফাংশনটি ব্যবহার করা হয়।
srand()
– র্যান্ডম সংখ্যা সিড সেট করাsrand()
ফাংশনটি rand()
ফাংশনের জন্য একটি সিড (seed) সেট করে, যা প্রতিবার আলাদা র্যান্ডম সংখ্যা উৎপন্ন করতে সহায়ক।
void srand(unsigned int seed);
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(0)); // সিড হিসেবে বর্তমান সময় ব্যবহার করা
printf("Random number: %d\n", rand());
return 0;
}
abs()
– ইন্টিজারের অ্যাবসোলিউট মান নির্ণয়abs()
ফাংশনটি একটি ইন্টিজার সংখ্যার অ্যাবসোলিউট মান নির্ণয় করতে ব্যবহৃত হয়।
int abs(int n);
#include <stdio.h>
#include <stdlib.h>
int main() {
int num = -10;
printf("Absolute value: %d\n", abs(num));
return 0;
}
labs()
এবং llabs()
– লং এবং লং লং ইন্টিজারের অ্যাবসোলিউট মান নির্ণয়labs()
এবং llabs()
ফাংশনগুলো যথাক্রমে long
এবং long long
ইন্টিজারের অ্যাবসোলিউট মান নির্ণয় করতে ব্যবহৃত হয়।
long int labs(long int n);
long long int llabs(long long int n);
#include <stdio.h>
#include <stdlib.h>
int main() {
long int num = -123456;
printf("Absolute long int value: %ld\n", labs(num));
return 0;
}
qsort()
– এলিমেন্ট সোর্ট করাqsort()
ফাংশনটি একটি এরে বা ডেটা এলিমেন্টকে দ্রুত (quick sort) পদ্ধতিতে সজ্জিত করতে ব্যবহৃত হয়। এটি যে কোন ধরনের ডেটা টাইপের সাথে কাজ করতে পারে।
void qsort(void *base, size_t num, size_t size, int (*compar)(const void *, const void *));
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int arr[] = {5, 2, 8, 1, 4};
int n = sizeof(arr) / sizeof(arr[0]);
qsort(arr, n, sizeof(int), compare);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
bsearch()
– বাইনারি সার্চbsearch()
ফাংশনটি একটি সজ্জিত (sorted) এরে থেকে একটি নির্দিষ্ট এলিমেন্ট খুঁজে বের করতে ব্যবহৃত হয়। এটি বাইনারি সার্চ অ্যালগরিদম ব্যবহার করে কাজ করে।
void *bsearch(const void *key, const void *base, size_t num, size_t size, int (*compar)(const void *, const void *));
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int arr[] = {1, 2, 4, 5, 8};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 4;
int *item = (int *)bsearch(&key, arr, n, sizeof(int), compare);
if (item != NULL) {
printf("Element found: %d\n", *item);
} else {
printf("Element not found\n");
}
return 0;
}
ফাংশন | কাজ | উদাহরণ |
---|---|---|
atoi() | স্ট্রিং থেকে ইন্টিজারে রূপান্তর | atoi("123"); |
atof() | স্ট্রিং থেকে ফ্লোটে রূপান্তর | atof("3.14"); |
atol() | স্ট্রিং থেকে লং ইন্টিজারে রূপান্তর | atol("123456"); |
rand() | র্যান্ডম সংখ্যা তৈরি | rand(); |
srand() | র্যান্ডম সংখ্যা সিড সেট করা | srand(time(0)); |
abs() | ইন্টিজারের অ্যাবসোলিউট মান নির্ণয় | abs(-10); |
qsort() | এলিমেন্ট সজ্জিত (সোর্ট) করা | qsort(arr, n, sizeof(int), compare); |
bsearch() | বাইনারি সার্চ | bsearch(&key, arr, n, sizeof(int), compare); |
stdlib.h
এর এই ইউটিলিটি ফাংশনগুলো সি প্রোগ্রামিংয়ে বিভিন্ন ধরনের কার্যকর কাজ সম্পাদন করতে সহায়ক, যেমন ডেটা রূপান্তর, মেমোরি ম্যানেজমেন্ট, র্যান্ডম সংখ্যা উৎপাদন, এবং সঠিকভাবে ডেটা সার্চ ও সজ্জিতকরণ।
atoi()
, atof()
, এবং atol()
এর মাধ্যমে ডেটা টাইপ কনভার্সনসি প্রোগ্রামিং ভাষায় atoi()
, atof()
, এবং atol()
ফাংশনগুলো স্ট্রিং থেকে নির্দিষ্ট ডেটা টাইপে মান কনভার্ট করতে ব্যবহৃত হয়। এই ফাংশনগুলো মূলত <stdlib.h>
হেডার ফাইলে সংজ্ঞায়িত এবং এগুলো ইনপুট স্ট্রিংকে ইন্টিজার, ফ্লোট বা লং টাইপে কনভার্ট করতে সহায়ক।
নিচে atoi()
, atof()
, এবং atol()
এর ব্যবহার এবং তাদের কার্যকারিতা বিস্তারিতভাবে আলোচনা করা হলো।
atoi()
– স্ট্রিং থেকে ইন্টিজার কনভার্সনatoi()
ফাংশনটি একটি স্ট্রিংকে ইন্টিজার (integer) টাইপে কনভার্ট করে। এটি একটি স্ট্রিং ইনপুট নিয়ে সংখ্যার অংশটি রিটার্ন করে এবং অপ্রাসঙ্গিক অংশ (যেমন, অক্ষর) উপেক্ষা করে। যদি স্ট্রিংটি একটি বৈধ সংখ্যার প্রতিনিধিত্ব না করে, তবে এটি 0 রিটার্ন করবে।
int atoi(const char *str);
str
– স্ট্রিং যা ইন্টিজারে কনভার্ট করতে হবে।#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "12345";
int num = atoi(str); // স্ট্রিং থেকে ইন্টিজারে কনভার্ট
printf("The integer value is: %d\n", num);
return 0;
}
এখানে atoi("12345")
ফাংশনটি স্ট্রিং "12345"
থেকে ইন্টিজার 12345 রিটার্ন করবে।
atof()
– স্ট্রিং থেকে ফ্লোট কনভার্সনatof()
ফাংশনটি একটি স্ট্রিংকে ফ্লোট (floating-point number) টাইপে কনভার্ট করে। এটি স্ট্রিংয়ের প্রথম সংখ্যার অংশটিকে ফ্লোটে কনভার্ট করে, এবং যদি স্ট্রিংটি একটি বৈধ ফ্লোট সংখ্যা না হয়, তবে এটি 0.0 রিটার্ন করবে।
double atof(const char *str);
str
– স্ট্রিং যা ফ্লোটে কনভার্ট করতে হবে।#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "123.45";
double num = atof(str); // স্ট্রিং থেকে ফ্লোটে কনভার্ট
printf("The float value is: %.2f\n", num);
return 0;
}
এখানে atof("123.45")
ফাংশনটি স্ট্রিং "123.45"
থেকে ফ্লোট 123.45 রিটার্ন করবে।
atol()
– স্ট্রিং থেকে লং ইন্টিজার কনভার্সনatol()
ফাংশনটি একটি স্ট্রিংকে লং ইন্টিজার (long integer) টাইপে কনভার্ট করে। এটি atoi()
এর মতোই কাজ করে, তবে এটি বড় সংখ্যাগুলোর জন্য ব্যবহৃত হয়, কারণ এটি ইন্টিজারের চেয়ে বড় সংখ্যা ধারণ করতে সক্ষম।
long atol(const char *str);
str
– স্ট্রিং যা লং ইন্টিজারে কনভার্ট করতে হবে।#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234567890";
long num = atol(str); // স্ট্রিং থেকে লং ইন্টিজারে কনভার্ট
printf("The long integer value is: %ld\n", num);
return 0;
}
এখানে atol("1234567890")
ফাংশনটি স্ট্রিং "1234567890"
থেকে লং ইন্টিজার 1234567890 রিটার্ন করবে।
ফাংশন | কাজ | রিটার্ন টাইপ | উদাহরণ |
---|---|---|---|
atoi() | স্ট্রিং থেকে ইন্টিজার কনভার্ট | int | "123" → 123 |
atof() | স্ট্রিং থেকে ফ্লোট কনভার্ট | double | "123.45" → 123.45 |
atol() | স্ট্রিং থেকে লং ইন্টিজার কনভার্ট | long | "1234567890" → 1234567890 |
atoi()
স্ট্রিংকে ইন্টিজারে কনভার্ট করতে ব্যবহৃত হয় এবং এটি ইনপুট স্ট্রিংটি ইন্টিজারে রূপান্তর করে।atof()
স্ট্রিংকে ফ্লোটে কনভার্ট করে এবং এটি ডেসিমাল পয়েন্ট সংখ্যাগুলি সঠিকভাবে রূপান্তর করে।atol()
স্ট্রিংকে লং ইন্টিজারে কনভার্ট করতে ব্যবহৃত হয়, যা বড় সংখ্যাগুলির জন্য ব্যবহৃত হয়।এই ফাংশনগুলো stdlib.h
হেডার ফাইলে সংজ্ঞায়িত এবং প্রোগ্রামে স্ট্রিং ডেটা টাইপের কনভার্সন করার জন্য খুবই উপকারী।
rand()
এবং srand()
এর মাধ্যমে র্যান্ডম নাম্বার জেনারেশনসি প্রোগ্রামিং ভাষায় rand()
এবং srand()
ফাংশনগুলি র্যান্ডম নাম্বার জেনারেশনের জন্য ব্যবহৃত হয়। rand()
ফাংশন একটি পসিবল র্যান্ডম নাম্বার উৎপন্ন করে, এবং srand()
ফাংশনটি র্যান্ডম নাম্বার জেনারেটরের বীজ (seed) সেট করে, যাতে র্যান্ডম নাম্বারগুলি প্রতি চালনার সময় আলাদা আলাদা হয়। সাধারণভাবে, র্যান্ডম নাম্বারগুলি অনেক ধরনের সিমুলেশন, গেম, বা পরীক্ষামূলক কাজে ব্যবহৃত হয়।
rand()
:
int rand(void);
0
থেকে RAND_MAX
পর্যন্ত একটি সংখ্যা রিটার্ন করে।srand()
:
void srand(unsigned int seed);
time()
ফাংশন থেকে সিড নেয়া হয়, যাতে প্রতিবার আলাদা র্যান্ডম নাম্বার উৎপন্ন হয়।rand()
এবং srand()
ব্যবহারযদি আপনি শুধুমাত্র rand()
ফাংশন ব্যবহার করেন, তাহলে প্রতিবার প্রোগ্রামটি চালানোর সময় একই র্যান্ডম নাম্বার উৎপন্ন হবে, কারণ র্যান্ডম জেনারেটরের বীজ একটিই থাকে। এটি সাধারণত পূর্বনির্ধারিত থাকে।
#include <stdio.h>
#include <stdlib.h>
int main() {
int random_number;
// র্যান্ডম নাম্বার জেনারেশন
random_number = rand();
printf("Random number: %d\n", random_number);
return 0;
}
এখানে, rand()
একটি পসিবল র্যান্ডম নাম্বার রিটার্ন করবে, কিন্তু প্রতিবার প্রোগ্রাম চালানোর সময় একই নাম্বার আসবে।
srand()
এবং rand()
ব্যবহার (অলাদা র্যান্ডম নাম্বার)যদি আপনি চাইছেন যে, প্রতিবার প্রোগ্রাম চালানোর সময় ভিন্ন ভিন্ন র্যান্ডম নাম্বার তৈরি হোক, তবে আপনাকে srand()
ফাংশন ব্যবহার করতে হবে। srand()
এর মাধ্যমে আপনি র্যান্ডম নাম্বার জেনারেটরের বীজ সেট করেন, এবং সাধারণত time(NULL)
ব্যবহার করা হয় যা সিস্টেমের বর্তমান সময় দেয়। এতে প্রতিবার প্রোগ্রাম চালানোর সময় একটি নতুন সিড তৈরি হয় এবং ভিন্ন ভিন্ন র্যান্ডম নাম্বার পাওয়া যায়।
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int random_number;
// র্যান্ডম নাম্বার জেনারেটরের বীজ সেট করা
srand(time(NULL)); // বর্তমান সময় দিয়ে সিড সেট করা
// র্যান্ডম নাম্বার জেনারেশন
random_number = rand();
printf("Random number: %d\n", random_number);
return 0;
}
এখানে time(NULL)
বর্তমান সময়ের সেকেন্ড মান দিচ্ছে এবং সেটি srand()
ফাংশনে সিড হিসেবে ব্যবহৃত হচ্ছে। এর ফলে প্রতিবার প্রোগ্রাম চালানোর সময় আলাদা আলাদা র্যান্ডম নাম্বার উৎপন্ন হবে।
আপনি rand()
ফাংশন থেকে যে র্যান্ডম নাম্বারটি পাচ্ছেন তা 0
থেকে RAND_MAX
পর্যন্ত হতে পারে। তবে আপনি যদি একটি নির্দিষ্ট সীমার মধ্যে র্যান্ডম নাম্বার চান, তবে সেটি করতে পারেন:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int random_number;
// র্যান্ডম নাম্বার জেনারেটরের বীজ সেট করা
srand(time(NULL));
// 1 থেকে 100 এর মধ্যে র্যান্ডম নাম্বার জেনারেশন
random_number = (rand() % 100) + 1;
printf("Random number between 1 and 100: %d\n", random_number);
return 0;
}
এখানে rand() % 100
দিয়ে 0 থেকে 99 এর মধ্যে একটি নাম্বার তৈরি হবে, তারপর +1
করে সেটি 1 থেকে 100 এর মধ্যে র্যান্ডম নাম্বার তৈরি হবে।
ফাংশন | বর্ণনা | সিঙ্কট্যাক্স |
---|---|---|
rand() | র্যান্ডম নাম্বার জেনারেট করে। | int rand(void); |
srand() | র্যান্ডম নাম্বার জেনারেটরের বীজ সেট করে | void srand(unsigned int seed); |
rand()
ফাংশনটি র্যান্ডম নাম্বার তৈরি করে, তবে এটি একই সিডের সাথে প্রতি চালনায় একই নাম্বার দিতে পারে।srand()
ফাংশনটি র্যান্ডম নাম্বার জেনারেটরের সিড সেট করে এবং সাধারণত time(NULL)
ব্যবহার করা হয়, যাতে প্রতি চালনায় আলাদা র্যান্ডম নাম্বার তৈরি হয়।rand() % n
ব্যবহার করা হয়।system()
ফাংশন এবং তার ব্যবহারসি প্রোগ্রামিংয়ে system()
ফাংশনটি একটি বাইরের কমান্ড বা প্রোগ্রাম চালানোর জন্য ব্যবহৃত হয়। এটি stdlib.h
হেডার ফাইলে সংজ্ঞায়িত এবং অপারেটিং সিস্টেমের শেলের মাধ্যমে কমান্ড চালানোর অনুমতি দেয়। system()
ফাংশনটি সাধারণত প্রোগ্রামিংয়ে বাইরের কমান্ড বা স্ক্রিপ্ট চালানোর জন্য ব্যবহার করা হয়।
int system(const char *command);
command
– যেকোনো শেল কমান্ড বা প্রোগ্রাম যা আপনি চালাতে চান।0
রিটার্ন করে এবং যদি কোনো ত্রুটি ঘটে তবে এটি -1
রিটার্ন করে।#include <stdio.h>
#include <stdlib.h>
int main() {
// শেল কমান্ড চালানো
int return_value = system("ls"); // UNIX/Linux এর জন্য ফাইলের তালিকা দেখানো
if (return_value == -1) {
printf("Error executing the command.\n");
}
return 0;
}
এখানে system()
ফাংশনটি ls
কমান্ড চালিয়েছে (যা UNIX/Linux সিস্টেমে ব্যবহৃত হয়) এবং কমান্ডের আউটপুট কনসোলে প্রদর্শিত হবে।
system()
ফাংশনের ব্যবহারsystem()
ফাংশনটি ব্যবহার করে আপনি সিস্টেমের শেলে যেকোনো কমান্ড চালাতে পারেন, যেমন ফাইল পরিচালনা, ডিরেক্টরি তালিকা দেখা, প্রোগ্রাম চালানো ইত্যাদি।
#include <stdio.h>
#include <stdlib.h>
int main() {
// কমান্ড প্রম্পটের মাধ্যমে ফোল্ডারের ফাইল তালিকা বের করা
system("dir"); // উইন্ডোজ সিস্টেমে
// অথবা
// system("ls"); // UNIX/Linux সিস্টেমে
return 0;
}
এখানে system()
ফাংশনটি dir
(উইন্ডোজ) বা ls
(UNIX/Linux) কমান্ড চালিয়েছে, যা সংশ্লিষ্ট সিস্টেমের ডিরেক্টরির ফাইল তালিকা দেখাবে।
system()
ফাংশনটি বাইরের প্রোগ্রাম বা স্ক্রিপ্ট চালানোর জন্যও ব্যবহার করা যেতে পারে।
#include <stdio.h>
#include <stdlib.h>
int main() {
// একটি বাইরের প্রোগ্রাম চালানো
system("python --version"); // পাইথন ভার্সন চেক করা
return 0;
}
এখানে system()
ফাংশনটি বাইরের Python প্রোগ্রাম চালিয়ে তার ভার্সন চেক করবে।
system()
ফাংশনটি শেল স্ক্রিপ্ট চালাতে ব্যবহার করা যেতে পারে, যা সাধারণত সিস্টেম প্রশাসন বা অন্যান্য অটোমেশন কাজের জন্য ব্যবহৃত হয়।
#include <stdio.h>
#include <stdlib.h>
int main() {
// শেল স্ক্রিপ্ট চালানো
system("./backup.sh"); // Linux/macOS এ backup.sh স্ক্রিপ্ট চালানো
return 0;
}
এখানে system()
ফাংশনটি backup.sh
শেল স্ক্রিপ্ট চালিয়েছে।
system()
ফাংশনের রিটার্ন ভ্যালু0
: কমান্ড সফলভাবে সম্পন্ন হয়েছে।-1
: কমান্ড চালানোর সময় কোনো ত্রুটি হয়েছে।#include <stdio.h>
#include <stdlib.h>
int main() {
int return_value;
return_value = system("ls"); // কমান্ড চালানো
if (return_value == -1) {
printf("Error executing the command.\n");
} else {
printf("Command executed successfully.\n");
}
return 0;
}
এখানে system()
ফাংশনের রিটার্ন ভ্যালু চেক করে এটি নিশ্চিত করা হয়েছে যে কমান্ডটি সফলভাবে চালানো হয়েছে নাকি কোনো সমস্যা ঘটেছে।
system()
ফাংশনটি বাইরের কমান্ড চালানোর জন্য ব্যবহৃত হয়, তাই এটি সতর্কতার সাথে ব্যবহার করা উচিত। বিশেষত যদি ব্যবহারকারী ইনপুট কমান্ড হিসেবে দেওয়ার মাধ্যমে বাইরের শেলের কমান্ড চালানোর সুযোগ থাকে (যেমন ওয়েব অ্যাপ্লিকেশন), তবে এটি কমান্ড ইনজেকশন আক্রমণের সুযোগ সৃষ্টি করতে পারে।system()
ব্যবহার করেন, তখন ইনপুট যাচাই করা এবং শেলের কমান্ডের নিরাপত্তা সম্পর্কে সচেতন থাকা গুরুত্বপূর্ণ।ফাংশন | কাজ | সিঙ্কট্যাক্স |
---|---|---|
system() | বাইরের শেল কমান্ড বা প্রোগ্রাম চালায় | int system(const char *command); |
system()
ফাংশনটি বাইরের কমান্ড বা প্রোগ্রাম চালানোর জন্য খুবই উপযোগী, তবে এটি নিরাপত্তা ঝুঁকির সৃষ্টি করতে পারে, তাই এটি ব্যবহার করার সময় সতর্ক থাকা উচিত।
common.read_more